<?php
require_once(Config::acquire('Controller', null, 'controller'));
require_once(Config::acquire('Diensten', MODEL));
/**
 * Created by JetBrains PhpStorm.
 * User: Sander
 * Date: 26-6-11
 * Time: 12:52
 * To change this template use File | Settings | File Templates.
 */

/**
 * Klasse DienstenController
 */

class DienstenController extends Controller{

    /**
     * Index.
     * Geeft de hoofdpagina met enkele info over Diensten.
     * @return void
     */
    public function index()
    {
        $this->view->render("Diensten.tpl");
    }

    /**
     * Overzicht.
     * Genereerd een overzicht van alle diensten.
     * @return void
     */

    public function overzicht()
    {
         $list = array();

        foreach (Diensten::readAll() as $diensten)


        $list[] = $diensten->toArray();

        $this->view->assign('detail_link', SDS::getURL('Diensten', 'detail'));
        $this->view->assign("diensten", $list);
        $this->view->render('Diensten_list.tpl');
     //   print_r($list);
    }

    /**
     * detail.
     * Geeft een gedetailleerde weergave van een bepaalde dienst.
     * 
     * @return void
     */
    public function detail()
    {
        $params = UrlDecoder::get_Params();

        if (is_null($params[0]))
            SDS::redirect("Diensten", "overzicht");
        $id = $params[0];
        foreach (Diensten::read($id)->toArray() as $key => $value) {
            $this->view->assign($key, $value);
        }
        $this->view->assign("question_link", SDS::getURL("Question", "detail"));
      //  $this->view->assign("form_URL", SDS::getURL('Diensten', 'bewerken', array($id)));
        $this->view->assign('wijzig_url', SDS::getURL('Diensten', 'bewerken', array($params[0])));
        $this->view->assign('verwijder_url', SDS::getURL('Diensten', 'delete', array($params[0])));
        $this->view->render('Diensten_Detail.tpl');

    }
    /**
     * toevoegen:
     * bij de functie toevoegen worden de toe te voegen gegevens van diensten klaar gezet om naar het formuleer te worden gezonden
     * @return void
     */
    public function toevoegen()
    {
        $questionIDs = array();

        foreach (Question::readAll() as $question) {
            $questionIDs[$question->getID()] = substr($question->getOmschrijving(),0,50).'...';
        }

        $this->view->assign('question', $questionIDs);
        $this->view->assign('form_URL', SDS::getURL('Diensten', 'add', null));
        $this->view->render("Diensten_Change.tpl");
    }

    /**
     * Bewerken:
     * het terughalen van de oude opties en de mogelijkheid om deze te veranderen.
     * wordt direct doorgestuurd naar het formulier.
     *
     * @return void
     */

    public function bewerken()
    {
        $params = UrlDecoder::get_Params();
        if (!isset($params[0]))
            SDS::redirect("Diensten", "overzicht");
        $id = $params[0];
        foreach (Diensten::read($id)->toArray() as $key => $value) {
            $this->view->assign($key, $value);
        }
        $list = array( );
        foreach(Question::readAll() as $question){
                  $list[$question->getID()] = substr($question->getOmschrijving(),0,50).'...';
        }
        $this->view->assign('question',$list);
        $this->view->assign('form_URL', SDS::getURL('Diensten', 'update', array($id)));
        $this->view->assign('DienstenTitle', 'Diensten Wijzigen');
        $this->view->render("Diensten_Change.tpl");

    }
/**
 * Add:
 * Hier wordt het invul formulier aangeroepen om een dienst toe te voegen
 * @return void
 */
    public function add()
    {
        require_once(Config::acquire('FormValidation', APPLICATION));
        FormValidation::stripInput();
        Diensten::create(null,
                            $_POST['Categorie'],
                            $_POST['Naam'],
                            $_POST['Omschrijving'],
                            Question::read($_POST['Question']))->update();
        SDS::redirect("Diensten", "overzicht");
    }

/**
 * Delete:
 * Hier wordt een bestaande dienst gedeleted op moment dat de functie wordt aangeroepen
 * @return void
 *
 */
    public function delete()
    {
          $id = UrlDecoder::get_Params();
        if (isset($id[0])) {
            Diensten::read($id[0])->delete();
            SDS::redirect("Diensten", "overzicht", null);
        }
    }
/**
 * Update:
 * Geeft de gegevens door aan de database en zet deze er in.
 * @return void
 */

    public function update()
    {
        require_once(Config::acquire('FormValidation', APPLICATION));
        FormValidation::stripInput();
        $params = UrlDecoder::get_Params();
        if (isset($params[0])) {
            $diensten = Diensten::read($params[0]);
            $diensten->setCategorie($_POST['Categorie']);
            $diensten->setNaam($_POST['Naam']);
            $diensten->setOmschrijving($_POST['Omschrijving']);
            $diensten->update();
            SDS::redirect("Diensten", "detail", $params[0]);
        }
        SDS::redirect("Diensten", "overzicht", null);
    }
}
